package org.cwgl.interfaces;

import java.util.Date;

import org.cwgl.exception.MyException;
import org.cwgl.model.Climas;
import org.cwgl.model.Standbook;
import org.cwgl.model.Usercase;
import org.cwgl.support.Page;

/**
 * @author 章景锋
 * @date 2012-12-16 下午4:02:01 
 * @class SelectService
 * @extends 
 * @description 查询需求数据
 */
public interface SelectService {

	/**
	 * 根据Id查询有效的案例对象
	 * @param id
	 * @return
	 * @throws MyException
	 */
	public abstract Usercase findUsercaseById(Integer id)throws MyException;
	
	/**
	 * 根据Id查询有效的财务对象
	 * @param id
	 * @return
	 * @throws MyException
	 */
	public abstract Climas findClimasById(Integer id)throws MyException;
	
	/**
	 * 根据Id查询有效的台账对象
	 * @param id
	 * @return
	 * @throws MyException
	 */
	public abstract Standbook findStandbookById(Integer id)throws MyException;
	
	/**
	 * 根据案例的Id分页查询出所有有效的台账记录
	 * @param id
	 * @return
	 * @throws MyException
	 */
	public abstract Page findStandbookByUsercaseId(Integer id,int start,int limit)throws MyException;
	
	/**
	 * 查询出在开始时间到结束时间段的所有有效财务信息记录
	 * @param startTime 开始时间
	 * @param endTime 结束时间
	 * @return
	 * @throws MyException
	 */
	public abstract Page findClaimsByTime(Date startTime,Date endTime,int start,int limit)throws MyException;
	
	/**
	 * 查询出在开始时间到结束时间段的所有有效案例信息记录
	 * @param startTime 开始时间
	 * @param endTime 结束时间
	 * @return
	 * @throws MyException
	 */
	public abstract Page findStandbookByTime(Date startTime,Date endTime,int start,int limit)throws MyException;
	
	/**
	 * 查询出指定时间段的案例的毛收入
	 * @param startTIme 开始时间
	 * @param endTime 结束时间
	 * @return
	 * @throws MyException
	 */
	public abstract Double findUsercaseMaoriByTime(Date startTime,Date endTime)throws MyException;
	
	/**
	 * 查询出指定时间段的财务的费用
	 * @param startTIme 开始时间
	 * @param endTime 结束时间
	 * @return
	 * @throws MyException
	 */
	public abstract Double findClimasMaoriByTime(Date startTime,Date endTime)throws MyException;
	
	
	/**
	 * 连接案例表和案例信息表查询出所有有效的案例信息
	 * @return
	 */
	public abstract Page findAllUsercase()throws MyException;
	
	/**
	 * 查询出所有有效的财务信息
	 * @return
	 * @throws MyException
	 */
	public abstract Page findAllClimas()throws MyException;
	
	/**
	 * 查询出纯收入
	 * @param startTime 开始时间
	 * @param endTime 结束时间
	 * @return
	 * @throws MyException
	 */
	public abstract Double findRealMaori(Date startTime,Date endTime)throws MyException;
}
